package com.td.module.agro.service.input;

import com.td.framework.common.pojo.PageResult;
import com.td.module.agro.controller.admin.input.vo.InputCreateReqVO;
import com.td.module.agro.controller.admin.input.vo.InputExportReqVO;
import com.td.module.agro.controller.admin.input.vo.InputPageReqVO;
import com.td.module.agro.controller.admin.input.vo.InputUpdateReqVO;
import com.td.module.agro.convert.input.InputConvert;
import com.td.module.agro.dal.dataobject.input.InputDO;
import com.td.module.agro.dal.mysql.input.InputMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
//import static com.td.module.agro.enums.ErrorCodeConstants.java.*;


/**
 * 投入品 Service 实现类
 *
 * @author 吴佰强
 */
@Service
@Validated
public class InputServiceImpl implements InputService {

    @Resource
    private InputMapper inputMapper;

    @Override
    public Long createInput(InputCreateReqVO createReqVO) {
        // 插入
        InputDO input = InputConvert.INSTANCE.convert(createReqVO);
        inputMapper.insert(input);
        // 返回
        return input.getId();
    }

    @Override
    public void updateInput(InputUpdateReqVO updateReqVO) {
        // 校验存在
       // this.validateInputExists(updateReqVO.getId());
        // 更新
        InputDO updateObj = InputConvert.INSTANCE.convert(updateReqVO);
        inputMapper.updateById(updateObj);
    }

    @Override
    public void deleteInput(Long id) {
        // 校验存在
//        this.validateInputExists(id);
        // 删除
        inputMapper.deleteById(id);
    }

//    private void validateInputExists(Long id) {
//        if (inputMapper.selectById(id) == null) {
//            throw exception(INPUT_NOT_EXISTS);
//        }
//    }

    @Override
    public InputDO getInput(Long id) {
        return inputMapper.selectById(id);
    }

    @Override
    public List<InputDO> getInputList(Collection<Long> ids) {
        return inputMapper.selectBatchIds(ids);
    }

    @Override
    public PageResult<InputDO> getInputPage(InputPageReqVO pageReqVO) {
        return inputMapper.selectPage(pageReqVO);
    }

    @Override
    public List<InputDO> getInputList(InputExportReqVO exportReqVO) {
        return inputMapper.selectList(exportReqVO);
    }

}
